/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package servicios.DAO.impl;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import modelo.Cliente;
import servicios.DAO.ClienteDAO;

/**
 *
 * @author epl
 */
public class ClienteDAOTopink implements ClienteDAO{

    private EntityManagerFactory emf;
    private EntityManager em;

    public ClienteDAOTopink() {
        emf = Persistence.createEntityManagerFactory("Single");
        em = emf.createEntityManager();
    }

    public void save(Cliente cliente) {
        em.getTransaction().begin();
        em.persist(cliente);
        em.getTransaction().commit();
    }

    public Cliente get(long id) {
        return (Cliente) em.find(Cliente.class, id);
    }

    public List<Cliente> findByNombre(String nombre) {
        Query qt = em.createNamedQuery("findByNombre");
            qt.setParameter("nombre", nombre);
        List<Cliente> clientes = qt.getResultList();
        return clientes;
    }

    public List<Cliente> findBySimilarNombre(String nombreSimilar) {
        Query qt = em.createNamedQuery("findByNombreSimilar");
            qt.setParameter("nombre", nombreSimilar + "%");
        List<Cliente> clientes = qt.getResultList();
        return clientes;
    }

    public List<Cliente> findByLocalidad(String localidadSimilar) {
        Query qt = em.createNamedQuery("findByLocalidad");
            qt.setParameter("localidad", localidadSimilar + "%");
        List<Cliente> clientes = qt.getResultList();
        return clientes;
    }

    public void dead(long id) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
